home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
data
/
dora
/
doraonln.plp
< prev
next >
Wrap
Text File
|
1993-11-30
|
10KB
|
342 lines
/* 共通処理の定義 */
/* 通信時間記録処理 */
%RECTIME{%dt @getdt;
%time @linetime;
%hh time/3600;
%hh @case(@nochar(hh),1,{im({0}|hh)},,{im(hh)});
%mm (time-time/3600*3600)/60;
%mm @case(@nochar(mm),1,{im({0}|mm)},,{im(mm)});
%ss time-time/60*60;
%ss @case(@nochar(ss),1,{im({0}|ss)},,{im(ss)});
TELNO := @head(sROAD,{/});
mkdir2(LOG2|{アクセスdat});
write(LOG2|{アクセスdat\CONNECT.DAT},
{tel no=}|TELNO|
{; logout=}|@getchar(dt,1,10)|{ }|@getchar(dt,17,8)|
{; time=}|hh|{h}|mm|{m}|ss|{s;\n});
};
/*異常切断処理*/
%AbortOff{ [CommentB]
display(CommentB);SNDMSG({okasi_f.snd});
display({\n}|NET|{-NETとの通信を強制切断します\n});
discon;RECTIME;display({\nモデムを直接切断しました\n\n});
SNDMSG({owata_f.snd});footnote({});stop
};
/*切断処理 及び 切断終了表示処理*/
%LogOff {
wait(3);
%LAST
{
case (@filechk(UP2|{\SAIGO}),
{Yes},
{type(@read(UP2|{\SAIGO}));type({\n//\n});delfile(UP2|{\SAIGO})
},
{No},
{type({//\n\n})}
)
};
%LAST1{wait(3);display(@xc({1B})|{[33m});discon;im({No});};
footnote({終了処理中});type({O\n});DOWNSTART;
wait(Wtime2,{type({Y\n})},{かえっちゃう},{type({Y\n})}
,{ログアウト},{type({Y\n})});
loop ({
wait ({3},{im({Yes})}
,{------->},{LAST;im({Yes})}
,{Gather},{type({//\n\n});im({Yes})}
,{伝言板を表示しますか},{type({N\n});im({Yes})}
,{Logoff},{im({No})}
,{Timepass},{im({No})}
);footnote({終了処理を行います});
});
loop ({
wait ({3},{im({Yes})}
,{きれた},{LAST1}
,{切断},{LAST1}
,{NO CARRIER},{LAST1}
,{Disconnected},{LAST1});
});
RECTIME;SNDMSG({owata_f.snd});footnote({});DOWNSTOP;im({No})};
/* ダウンロード開始と終了の処理 */
/* LOG DOWN START */
%DOWNSTART{
case (CHeck,
{Yes},{stoprec},{No},{CHeck:={Yes}});
var DAY1[24];var DAY2[10];mkdir2(@body(LOG2,,{\}));
DAY1:=@daylong;DAY2:=@im(@getchar(DAY1,6,2)|@getchar(DAY1,9,2));
footnote({ログを読み込み中です});receive(LOG2|NET|DAY2|{.LOG})
};
/* LOG DOWN CHECK */
%DOWNCHECK{
case (CHeck,
{Yes},{stoprec},{No},{CHeck:={Yes}});
};
/* LOG DOWN STOP */
%DOWNSTOP{
case (CHeck,
{Yes},{stoprec},{No},);
CHeck:={No};
setcdir(CDIR)
};
/* 「ago」前の年月日を「YYYY/MM/DD」の形式で返す */
%getday{[ago]
var today[25];var YEAR[5];var MONTH[5];var DAY[5];
%plus {[DATA]
case(@nochar(DATA),
{1},{im({0}|DATA)},
{2},{im(DATA)}
)
};
%lastmonth{case(@plus(MONTH),
{01},{im({31})},{02},{im({31})},{03},{im({28})},
{04},{im({31})},{05},{im({30})},{06},{im({31})},
{07},{im({30})},{08},{im({31})},{09},{im({31})},
{10},{im({30})},{11},{im({31})},{12},{im({30})
})};
today:=@daylong; YEAR :=@getchar(today,1,4);
MONTH:=@getchar(today,6,2); DAY :=@getchar(today,9,2);
case(DAY-ago<1,{Yes},{
loop({ DAY:=DAY+@lastmonth;
case(@plus(MONTH),
{01},{MONTH:=12; YEAR:=YEAR-1},
,{MONTH:=MONTH-1}
);
im(DAY-ago<1);
})});
DAY:=DAY-ago;
im(YEAR|{/}|@plus(MONTH)|{/}|@plus(DAY))};
/* Yes/Noを1/2に変換する */
%YesNo {[YN,default];
case (YN,{Yes},{im({1})},{No},{im({2})},,{im(default)})};
/* メニュ-への予約表示 */
%YOYAKU {
case(@filechk(UP2|{_mopres.ctl})||@filechk(UP2|{_mopdlib.ctl}),
{Yes},{yoyaku:={予約あり}},
{No},{yoyaku:={予約なし}}
);
};
/* RTBBSへの通信メニュー */
%ONLINE {
var access [2];var yoyaku [8];var updown [2];var am3 [2];
FREE1:={ 2};LGLOOK:={ 2};BDLIST:={ 2};DLLIST:={ 2};Am3:={};
loop ({
case(genteiT,
{Yes},{
footnote({現在のアクセス予定NO.=}|sROAD|{.通信可能時間=}
|openT|{時~}
|closeT|{時})},
{No},{
footnote({現在のアクセス予定NO.=}|sROAD|
{.通信可能時間=24時間})}
);
SNDMSG({erande_f.snd});
%dortbbs@YesNo(DORTBBS,{1});
updown:=@case (UPDOWN,
{first},{im({1})},{last},{im({2})},
{No},{im({3})},,{im({1})});
%maildel@case (MAILDEL|MAILRED,
{YesYes},{im({1})},{YesNo},{im({1})},
{NoYes},{im({2})},{NoNo},{im({3})},,{im({2})});
%jisaR @YesNo(JISAR,{1}); %free1 FREE1;
%pltmemo@YesNo(PLTmemo,{2}); %lglook LGLOOK;
%mactiv @YesNo(MACTIV,{2}); %bdlist @YesNo(BDLIST,{2});
%dllist @YesNo(DLLIST,{2});
case (genteiT,
{Yes} ,{am3:={ 1}},
{Detail},{am3:={ 2}},
{No} ,{am3:={ 3}},
,{am3:={ 3}}
);
%doraend @case(DORAEND,
{stopdora},{im({1})},
{stopmop},{im({2})},
{poweroff},{im({3})},
{continue},{im({4})},
,{im({4})});
YOYAKU;
%a @plane(
{r自動通信処理(}|NET|{での処理) /する /しない\n}|
{rアップ・ダウンロード処理(}|yoyaku|{)/最初 /最後 /しない\n}|
{r メールの処理 /既読削除/全部確認/しない\n}|
{r全員のプロフィール取得(要時間) /する /しない\n}|
{r伝言板を見る /する /しない\n}|
{r「オートパイロットでアクセス」メモをアップ /する /しない\n}|
{r未読ポインタ /7日前/3日前/1日前/前 回\n}|
{rログ記録を見る / する /しない\n}|
{r会員名簿を取得 / する /しない\n}|
{rボード一覧を見る / する /しない\n}|
{rライブラリ一覧を見る / する /しない\n}|
{r自由行動 / する /しない\n}|
{r通信開始時間 /限定時刻/時刻指定/即時\n}|
{r自動通信終了後 /DORA終了/MOPT終了/電源切断/DORA継続\n}|
{s設定変更処理 /BBS設定 /各種設定/CH.選択 \n}|
{sアップ・ダウンロード指定設定処理 / アップロード / ダウンロード \n}|
{s通信を開始する / 開 始 / 終 了 \n},
dortbbs,updown,maildel,2,jisaR,pltmemo,4,LGLOOK,mactiv,bdlist,dllist
,FREE1,am3,doraend);
%dortbbs@head(@getline(a,1,1),{\n});
%updown @head(@getline(a,2,1),{\n});
%maildel@head(@getline(a,3,1),{\n});
%allpro @head(@getline(a,4,1),{\n});
%jisaR @head(@getline(a,5,1),{\n});
%pltmemo@head(@getline(a,6,1),{\n});
%mpoint @head(@getline(a,7,1),{\n});
LGLOOK:=@head(@getline(a,8,1),{\n});
%mactiv @head(@getline(a,9,1),{\n});
%bdlist @head(@getline(a,10,1),{\n});
%dllist @head(@getline(a,11,1),{\n});
FREE1:= @head(@getline(a,12,1),{\n});
am3:= @head(@getline(a,13,1),{\n});
%doraend@head(@getline(a,14,1),{\n});
%setup @head(@getline(a,15,1),{\n});
%updnset@head(@getline(a,16,1),{\n});
%ok @head(@getline(a,17,1),{\n});
case (dortbbs,
{ 1},{DORTBBS:={Yes}},
{ 2},{DORTBBS:={No}},
,{DORTBBS:={Yes}});
case(updown,
{ 1},{UPDOWN:={first}},
{ 2},{UPDOWN:={last}},
{ 3},{UPDOWN:={No}},
,{UPDOWN:={first}});
case(maildel,
{ 1},{MAILDEL:={Yes};MAILRED:={No}},
{ 2},{MAILDEL:={No};MAILRED:={Yes}},
,{MAILDEL:={No};MAILRED:={No}});
case(allpro,
{ 1},{allPRO:={Yes}},
{ 2},{allPRO:={No}},
,{allPRO:={No}});
case (jisaR,
{ 1},{JISAR:={Yes}},
{ 2},{JISAR:={No}},
,{JISAR:={Yes}});
case (pltmemo,
{ 1},{PLTmemo:={Yes}},
{ 2},{PLTmemo:={No}},
,{PLTmemo:={Yes}});
case (mpoint,
{ 1},{mPOINT:=@im(@getchar(@getday(7),3,8))},
{ 2},{mPOINT:=@im(@getchar(@getday(3),3,8))},
{ 3},{mPOINT:=@im(@getchar(@getday(1),3,8))},
{ 4},{mPOINT:={}});
case (am3,
{ 1},{AM3:={Yes}},
{ 2},{AM3:={Detail}},
{ 3},{AM3:={No}},
,{AM3:={No}});
case (doraend,
{ 1},{DORAEND:={stopdora}},
{ 2},{DORAEND:={stopmop}},
{ 3},{DORAEND:={poweroff}},
{ 4},{DORAEND:={continue}});
case (mactiv,
{ 1},{MACTIV:={Yes}},
{ 2},{MACTIV:={No}},
,{MACTIV:={Yes}});
case (bdlist,
{ 1},{BDLIST:={Yes}},
{ 2},{BDLIST:={No}},
,{BDLIST:={Yes}});
case (dllist,
{ 1},{DLLIST:={Yes}},
{ 2},{DLLIST:={No}},
,{DLLIST:={Yes}});
case (ok,
{ 1},
{case (MAILRED={No}&&MAILDEL={No}&&DORTBBS={No}&&
UPDOWN={No},
{Yes}, {LOGIN1},
{No}, {ONLINE1})},
{ 2},{im({No})},
,
{
case (setup,
{ 1},{setcdir(CDIR);#DORATGK.PLP},
{ 2},{setcdir(CDIR);#DORASET.PLP},
{ 3},{selCH});
case (updnset,
{ 1},{setcdir(CDIR);#DORAUSET.PLP},
{ 2},{setcdir(CDIR);#DORADSET.PLP});
case (ok={ 0}&&setup={ 0}&&updnset={ 0},
{Yes},{selCH;im({No})},
{No},{im({Yes})});
})})};
/* メニュ-への(有り・無し)表示 */
%Arinasi{[arinasi]
case(arinasi,
{Yes},{im({有り})},
{No},{im({無し})},,{im({無し})}
);
};
/* アクセスするチャンネル変更の処理 */
%selCH{
%bestCH@case(sROAD,ROAD,{im({1})},ROAD2,{im({2})},ROAD3,{im({3})},
ROAD4,{im({4})},,{im({1})});
SNDMSG({erande_f.snd});
loop ({
%a @plane(
{c これからアクセスする}|NET|{のチャンネルを選択して下さい。\n}|
{c ch.1の電話番号=}|ROAD|{ \n}|
{c 時間限定 (}|@Arinasi(GEN)|{) \n}|
{c ch.2の電話番号=}|ROAD2|{ \n}|
{c 時間限定 (}|@Arinasi(GEN2)|{) \n}|
{c ch.3の電話番号=}|ROAD3|{ \n}|
{c 時間限定 (}|@Arinasi(GEN3)|{) \n}|
{c ch.4の電話番号=}|ROAD4|{ \n}|
{c 時間限定 (}|@Arinasi(GEN4)|{) \n}|
{r チャンネル選択 /ch.1 /ch.2 /ch.3 /ch.4 \n}|
{s / 設定 / 取消 },
bestCH);
%bestCH @head(@getline(a,1,1),{\n});
%ok @head(@getline(a,2,1),{\n});
case(ok,
{ 1}, {
case (bestCH,
{ 1},{sROAD:=@im(ROAD);Am3:=@im(GEN)},
{ 2},{sROAD:=@im(ROAD2);Am3:=@im(GEN2)},
{ 3},{sROAD:=@im(ROAD3);Am3:=@im(GEN3)},
{ 4},{sROAD:=@im(ROAD4);Am3:=@im(GEN4)},
,{sROAD:=@im(ROAD)Am3:=@im(GEN)});
display(sROAD|{へのアクセスに変更しました。\n});
genteiT:=Am3;
case (@getchar(sROAD,1,1)={/},
{Yes},{im({Yes})},
{No},{im({No})})
},
{ 2},{},
,{im({No})});
});
};
/* ログインのみの処理 */
%LOGIN1 {setcdir(CDIR);#DORALGIN.PLP;
case(RETCD,{Start},
{setcdir(CDIR);#DORACHAT.PLP;DOWNSTOP;LogOff;AUTOEND},,{im({Yes})})
};
/* アップ/ダウンロード処理 */
%UPDOWN1{case(@filechk(UP2|{_mopres.ctl})||@filechk(UP2|{_mopupld.ctl}),
{Yes},{setcdir(CDIR);#DORAUPLD.PLP});
case(@filechk(UP2|{_mopdlib.ctl})||@filechk(UP2|{_mopdnld.ctl}),
{Yes},{setcdir(CDIR);#DORADNLD.PLP})};
/* オンライン処理 */
%ONLINE1{
setcdir(CDIR);#DORALGIN.PLP;
case(RETCD,{Start},
{case(UPDOWN,{first},{UPDOWN1});
setcdir(CDIR);#DORALOOP.PLP;
case(UPDOWN,{last},{UPDOWN1});
case(FREE1={ 1},{Yes},{setcdir(CDIR);#DORACHAT.PLP});
LogOff;wait(1);
case(DORAEND,{stopdora},{PLTSTOP},{stopmop},{stopterm},
{poweroff},{command({poff});im({No})},{continue},{im({No})})},
,{im({Yes})});
};
var Am3 [3]; /* チャンネル選択フラグ*/
var LOGFILE [12]; /* ログファイル名 */
var TELNO [20]; /* 接続電話番号 */
var RETCD [6]; /* DORALGINのリターンコード */
var upldcntl[64]; /* アップロード制御ファイル名 */
var dnldcntl[64]; /* ダウンロード制御ファイル名 */
var CHeck [3]; /* ログダウンチェックフラグ */
ONLINE;